--- Value types.
Type = {
    --- A bool. 1 byte.
    Bool,
    
    --- A char. 1 byte.
    Char,
    
    --- A byte. 1 byte (obviously).
    Byte,
    
    --- A short. 2 bytes.
    Short,
    
    --- An unsigned short. 2 bytes.
    UShort,
    
    --- An int. 4 bytes.
    Int,
    
    --- An unsigned int. 4 bytes.
    UInt,
    
    --- A long. 8 bytes.
    Long,
    
    --- An unsigned long. 8 bytes.
    ULong,
    
    --- A float. 4 bytes.
    Float,
    
    --- A double. 8 bytes.
    Double,
    
    --- A UTF-8 string.
    String,
    
    --- An int on 32-bit or a long on 64-bit.
    IntPtr,
    
    --- A uint on 32-bit or a ulong on 64-bit.
    UIntPtr,
	
	--- A GUID. 16 bytes.
	GUID,
};

--- Immediately exit the client. Does not return.
function TerminateClient () end
    
--- Open a URL in the default browser.
-- @param URL The URL to open.
function OpenURL (URL) end
        
--- Get whether the client is the foreground window.
-- @return Whether the client is the foreground window.
function IsForeground () end

--- Get the state of a key.
-- @param Key The virtual key code of the key.
-- @return Whether the key is down, and whether the key is toggled.
-- @see Virtual key codes at https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
function GetKeyState (Key) end

--- Get the version number of FireHack.
-- @return The major, minor, and patch version numbers.
function GetFireHackVersion () end

--- Get whether a hack is enabled.
-- @param Name The name of the hack.
-- @return Whether the hack is enabled.
function IsHackEnabled (Name) end

--- Set whether a hack is enabled.
-- @param Name The name of the hack.
-- @param Enabled Whether the hack is enabled.
function SetHackEnabled (Name, Enabled) end

--- Get the time remaining on an auction.
-- @param Type The type of the auction. Either "List", "Bidder", or "Owner".
-- @param Index The index of the auction.
-- @return The number of milliseconds remaining on the auction.
function GetAuctionItemExactTimeLeft (Type, Index) end

--- Call a function in a loaded module. It must return void and take no arguments.
-- @param Module The name of the module.
-- @param Function The name of the function.
function CallModuleFunction (Module, Function) end

--- Get a session variable.
-- @param Name The name of the session variable.
-- @return The value of the session variable as a string.
function GetSessionVariable (Name) end
	
--- Set a session variable.
-- @param Name The name of the session variable.
-- @param Value The value of the session variable. It must be a string.
function SetSessionVariable (Name, Value) end
	
--- Download data from a URL using an HTTP GET request.
-- @param Host The host.
-- @param URL The rest of the URL.
-- @param Secure Whether to use HTTPS.
-- @param OnComplete A function that is called with the data when the request completes.
-- @param OnError A function that is called with the error message if an error occurs.
function DownloadURL (Host, URL, Secure, OnComplete, OnError) end